From a3dcfafba689dd646513587930371f9a7384bf11 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 14 Sep 2020 17:06:34 -0400 Subject: [PATCH] gtk-demo: Improve the builder demo Make the keyboard shortcuts work. --- demos/gtk-demo/builder.c | 36 ++++++++++++++++++++++++++++++++++++ demos/gtk-demo/demo.ui | 16 ++++++---------- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/demos/gtk-demo/builder.c b/demos/gtk-demo/builder.c index 7699b3d0f6..3574b3dbeb 100644 --- a/demos/gtk-demo/builder.c +++ b/demos/gtk-demo/builder.c @@ -105,6 +105,7 @@ do_builder (GtkWidget *do_widget) GtkBuilder *builder; GtkWidget *about; GtkWidget *status; + GtkEventController *controller; builder = gtk_builder_new_from_resource ("/builder/demo.ui"); @@ -118,6 +119,41 @@ do_builder (GtkWidget *do_widget) window); gtk_widget_insert_action_group (window, "win", actions); + controller = gtk_shortcut_controller_new (); + gtk_shortcut_controller_set_scope (GTK_SHORTCUT_CONTROLLER (controller), + GTK_SHORTCUT_SCOPE_GLOBAL); + gtk_widget_add_controller (window, controller); + gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller), + gtk_shortcut_new (gtk_keyval_trigger_new (GDK_KEY_n, GDK_CONTROL_MASK), + gtk_named_action_new ("win.new"))); + gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller), + gtk_shortcut_new (gtk_keyval_trigger_new (GDK_KEY_o, GDK_CONTROL_MASK), + gtk_named_action_new ("win.open"))); + gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller), + gtk_shortcut_new (gtk_keyval_trigger_new (GDK_KEY_s, GDK_CONTROL_MASK), + gtk_named_action_new ("win.save"))); + gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller), + gtk_shortcut_new (gtk_keyval_trigger_new (GDK_KEY_s, GDK_CONTROL_MASK|GDK_SHIFT_MASK), + gtk_named_action_new ("win.save-as"))); + gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller), + gtk_shortcut_new (gtk_keyval_trigger_new (GDK_KEY_q, GDK_CONTROL_MASK), + gtk_named_action_new ("win.quit"))); + gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller), + gtk_shortcut_new (gtk_keyval_trigger_new (GDK_KEY_c, GDK_CONTROL_MASK), + gtk_named_action_new ("win.copy"))); + gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller), + gtk_shortcut_new (gtk_keyval_trigger_new (GDK_KEY_x, GDK_CONTROL_MASK), + gtk_named_action_new ("win.cut"))); + gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller), + gtk_shortcut_new (gtk_keyval_trigger_new (GDK_KEY_v, GDK_CONTROL_MASK), + gtk_named_action_new ("win.paste"))); + gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller), + gtk_shortcut_new (gtk_keyval_trigger_new (GDK_KEY_F1, 0), + gtk_named_action_new ("win.help"))); + gtk_shortcut_controller_add_shortcut (GTK_SHORTCUT_CONTROLLER (controller), + gtk_shortcut_new (gtk_keyval_trigger_new (GDK_KEY_F7, 0), + gtk_named_action_new ("win.about"))); + about = GTK_WIDGET (gtk_builder_get_object (builder, "aboutdialog1")); gtk_window_set_transient_for (GTK_WINDOW (about), GTK_WINDOW (window)); gtk_window_set_hide_on_close (GTK_WINDOW (about), TRUE); diff --git a/demos/gtk-demo/demo.ui b/demos/gtk-demo/demo.ui index bd541040dd..01847f8b92 100644 --- a/demos/gtk-demo/demo.ui +++ b/demos/gtk-demo/demo.ui @@ -29,29 +29,24 @@ _New win.new - <Control>n _Open win.open - <Control>o _Save win.save - <Control>s Save _As win.save-as - <Control>q
_Quit win.quit - <Control><Shift>s
@@ -61,17 +56,14 @@ _Copy win.copy - <Control>c _Cut win.cut - <Control>x _Paste win.paste - <Control>v @@ -81,12 +73,10 @@ _Help win.help - F1 _About win.about - F7 @@ -118,6 +108,7 @@ New Create a new file document-new + win.new @@ -125,6 +116,7 @@ Open Open a file document-open + win.open @@ -132,6 +124,7 @@ Save Save a file document-save + win.save @@ -142,6 +135,7 @@ Copy Copy selected object into the clipboard edit-copy + win.copy @@ -149,6 +143,7 @@ Cut Cut selected object into the clipboard edit-cut + win.cut @@ -156,6 +151,7 @@ Paste Paste object from the clipboard edit-paste + win.paste -- 2.30.2